跳到主要内容

Helm 的使用

安装 Helm​

Mac​

通过 brew install helm 安装即可。

Linux​

Binary downloads of the Helm client can be found on the Releases page .

curl -LO https://get.helm.sh/helm-v3.14.4-linux-amd64.tar.gz

之后解压文件:

tar -zxvf helm-v3.14.4-linux-amd64.tar.gz

将 Helm 可执行文件移动到一个你希望存放可执行文件的目录,比如 /usr/local/bin:

sudo mv linux-amd64/helm /usr/local/bin/helm

确保 /usr/local/bin 在你的 PATH 中(一般都在)。你可以在 .bashrc 或 .zshrc 文件中添加如下行:

export PATH=$PATH:/usr/local/bin

Helm 运行时警告​

看起来您遇到了两个警告:Kubernetes 配置文件具有不安全的权限设置。为了解决这个问题,您可以执行以下步骤:

  1. 更改文件权限:您需要将 Kubernetes 配置文件的权限设置为仅对您自己可读写。您可以使用 chmod 命令来更改文件权限。在这种情况下,您可以运行以下命令:
chmod 600 /home/crater/.kube/config

这会将文件权限设置为仅对所有者可读可写,而不允许组或其他用户读取或写入该文件。

  1. 确认权限:在更改权限后,您可以再次运行 helm version 命令,以确保不再显示警告。

  2. 检查文件权限:您可以再次运行 ls -l /home/crater/.kube/config 来验证权限是否正确更改。

这些步骤将帮助您解决警告并提高您的 Kubernetes 配置文件的安全性。

Helm 常见命令​

环境准备​

1. Helm 使用代理​

需要把 Kubernetes Api Server 的域名加入到 no_proxy 中。

export https_proxy=
export no_proxy=

安装应用​

2. 添加 Chart 仓库​

helm repo add <repo-name> <repo-url>

例如,添加官方的 Helm 仓库:

helm repo add stable https://charts.helm.sh/stable

3. 搜索 Chart 版本信息​

helm search repo <keyword>

例如,搜索包含 metallb 的 Chart:

$ helm search repo metallb
NAME CHART VERSION APP VERSION DESCRIPTION
metallb/metallb 0.14.8 v0.14.8 A network load-balancer implementation for Kube...

结果会包含 Chart Version 信息,在安装的时候最好指定 Version,便于后续复现。

4. 获取 Chart 的详细信息​

helm show <chart-type> <chart>

常用的 <chart-type> 包括:

  • chart: 显示 Chart 的基本信息
  • values: 显示 Chart 的默认值

例如,获取指定版本的 metallb 的基本信息:

helm show chart metallb/metallb --version 0.14.8
helm show values metallb/metallb --version 0.14.8

为了自定义安装内容,我们可以对 values 输出进行重定向,保存为文件:

helm show values metallb/metallb --version 0.14.8 > values.yaml

之后结合自己的需求,修改 values.yaml 中的内容。

5. 渲染 Helm Chart 的模板​

helm template <release-name> <chart>

用于渲染 Helm Chart 的模板,而不实际部署。

例如:

helm template metallb metallb/metallb -f values.yaml

6. 安装常用参数​

默认情况下,安装的命令如下:

helm install <release-name> <chart> [flags]

例如,安装一个名为 my-release 的 Chart:

helm install my-release stable/mysql

然而,这种方式并不适合需要更新的情况。先卸载再更新对于某些场景则影响非常大(如 Volcano 卸载会删除所有 Queue 以及 VcJob),更推荐先进行 Dry Run,并通过升级的形式安装:

helm upgrade --install metallb metallb/metallb --dry-run

这样能看到安装的输出文件,并对比看看自己对 Values 的改动是否体现。

在此基础上,可以指定命名空间,否则会用 Default 或者当前 Context 的命名空间。

helm upgrade --install metallb metallb/metallb \
-f values.yaml \
--namespace metallb-system \
--create-namespace \
--version v0.14.8 \
--dry-run

指定版本、values.yaml 文件的位置。

7. 安装 Chart​

完成上述准备工作后,我们可以正式安装 Chart 了:

$ helm upgrade --install metallb metallb/metallb \
-f values.yaml \
--namespace metallb-system \
--create-namespace \
--version v0.14.8

Release "metallb" does not exist. Installing it now.
NAME: metallb
LAST DEPLOYED: Thu Nov 21 22:56:21 2024
NAMESPACE: metallb-system
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
MetalLB is now running in the cluster.

Now you can configure it via its CRs. Please refer to the metallb official docs
on how to use the CRs.

检查与维护​

8. 列出已安装的 Releases​

helm list [flags]

需要注意的是,区分命名空间。例如:

$ helm list -n metallb-system
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
metallb metallb-system 1 2024-11-21 22:56:21.27273 +0800 CST deployed metallb-0.14.8 v0.14.8

可以看到刚才成功安装了 MetalLB。

9. 查看 Release 的详细信息​

helm status <release-name>

10. 升级 Release​

helm upgrade <release-name> <chart> [flags]

例如,升级 my-release:

helm upgrade my-release stable/mysql

11. 卸载 Release​

helm uninstall <release-name> [flags]

例如,卸载 my-release:

helm uninstall my-release

12. 更新 Chart 仓库​

helm repo update

制作应用​

13. 生成 Chart​

helm create <chart-name>

用于创建一个新的 Helm Chart 模板。